System and method for providing GNSS corrections

ABSTRACT

A system or method for generating or distributing GNSS corrections can include or operate to: generate a set of corrections based on satellite observations, wherein each correction of the set of corrections comprises an area associated with the correction, a tag, and correction data; update a set of stored corrections with the set of received corrections based on a tag associated with each correction of the set of stored corrections and the tag associated with each correction of the set of received corrections; and transmit stored corrections of the set of stored corrections to the GNSS receiver when the area associated with the stored corrections matches the locality of the GNSS receiver.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional Application No. 63/053,387, filed 17 Jul. 2020, which is incorporated in its entirety by this reference.

TECHNICAL FIELD

This invention relates generally to the satellite positioning field, and more specifically to a new and useful system and method in the satellite positioning field.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 is a schematic representation of the system.

FIG. 2 is a schematic representation of the method.

FIG. 3 is a schematic representation of an example of the system.

FIG. 4 is a schematic representation of an example of corrections associated with different regions where each color corresponds to a different GNSS correction.

FIGURE SA is a schematic representation of an example of transmitted corrections at a first time.

FIG. 5B is a schematic representation of an example of transmitted corrections at a second time, after the first time of FIG. 5A, where a subset of the corrections has been modified.

FIG. 6 is a schematic representation of an example of data (e.g., correction) updates.

FIGS. 7A and 7B are schematic representations of an example of data (e.g., correction) provision at a first and second time, respectively.

FIGS. 8A-8F are schematic representations of example paths for transmitting discrete or point based data (e.g., corrections).

DESCRIPTION OF THE PREFERRED EMBODIMENTS

The following description of the preferred embodiments of the invention is not intended to limit the invention to these preferred embodiments, but rather to enable any person skilled in the art to make and use this invention.

1. Overview.

As shown in FIG. 1 , the system 10 can include a computing system 300, one or more receivers 100, and one or more reference stations 200. The computing system can include a correction generator 320, a gateway 340, a storage module 360, a distribution module 380, a positioning module 390, and/or any suitable modules or components. The distribution module preferably functions to distribute (e.g., transmit) GNSS corrections to the GNSS receiver.

As shown in FIG. 2 , the method 20 can include receiving a set of satellite observations S100, determining GNSS corrections S200, storing the GNSS corrections S300, transmitting the GNSS corrections S400. The method can optionally include determining a receiver position S500 and/or any suitable steps.

The system and method preferably function to generate and transmit GNSS corrections to one or more GNSS receivers. Embodiments of the system and/or method can be used, for example, in autonomous or semi-autonomous vehicle guidance (e.g., for unmanned aerial vehicles (UAVs), unmanned aerial systems (UAS), self-driving cars, agricultural equipment, robotics, rail transport/transit systems, autonomous trucking, last mile delivery, etc.), GPS/GNSS research, surveying systems, user devices, mobile applications, internet-of-things (IOT) devices, and/or may be used in any other suitable application. In specific examples, the system (and/or components) can be coupled to any suitable external system such as a vehicle (e.g., UAV, UAS, car, truck, etc.), robot, railcar, user device (e.g., cell phone), and/or any suitable system, and can provide positioning data, integrity data (e.g., protection level data), and/or other data to said system.

However, the system and/or method can additionally or alternatively be used to transmit any suitable data to one or more endpoint.

2. Benefits.

Variations of the technology can confer several benefits and/or advantages.

First, variants of the technology can ensure that a GNSS receiver only receives GNSS corrections that are relevant for that receiver to determine its position. By only receiving relevant GNSS corrections, the bandwidth required to transmit corrections can be decreased and/or the speed at which GNSS corrections are received can be increased. Specific examples of the technology can ensure only relevant GNSS corrections are transmitted by storing a cache of updated GNSS corrections and transmitting only the GNSS corrections that have been updated, by providing GNSS corrections that correspond to a GNSS receiver locality (e.g., an approximate GNSS receiver location such as within or less than 0.1 km, 1 km, 10 km, 100 km, etc.; within a given country or other geographic space; etc.), and/or by otherwise providing GNSS corrections based on metadata associated with the GNSS receiver.

Second, variants of the technology can ensure that GNSS corrections can be used with the GNSS receiver they are sent to. In specific examples, a message broker can format the GNSS corrections transmitted to the GNSS receiver so that the receiver can use the corrections.

Third, variants of the technology resolve SSR issues. First, tagging corrections with a tag (e.g., serial identifier) identifies the most recent correction (of a given type) to use, resolving issues stemming from asynchronous correction type updates. The tagging can also resolve receiver connectivity issues, and identify lost or dropped corrections. Second, this allows the corrections to be broadcast instead of retrieved by the receiver, which resolves corrections versioning issues arising from SSR's one-directional nature.

However, variants of the technology can confer any other suitable benefits and/or advantages.

3. System.

The system preferably functions to generate GNSS corrections which can be used to improve (e.g., speed up, increase the accuracy of, increase the integrity of, etc.) the determination of a GNSS receiver position.

The system preferably uses a set of data collected by one or more data sources. Data sources can include: receivers, sensors (e.g., located onboard the receiver, the external system, the reference stations, etc.), databases, satellites, reference stations, and/or any other suitable data source. The set of data preferably corresponds to a set of satellite observations, but can additionally or alternatively include a set of sensor observations or other data.

The set of satellite observations can include orbital data, timestamp, code data, carrier phase data, pseudocode data, and/or any suitable data. The set of satellite observations can include and/or be associated with metadata (e.g., ephemeris data) and/or any suitable data or information. The set of satellite observations preferably includes satellite observations corresponding to satellites from a plurality of satellite constellations (e.g., Global Positioning System (GPS), GLObal Navigation Satellite System (GLONASS), BeiDou navigation satellite System (BDS), Galileo, Navigation with Indian Constellation (NavIC), Quasi-Zenith Satellite System (QZSS), etc.). However, the set of satellite observations can correspond to satellites from a single satellite constellation, can include data from an augmentation system (e.g., Satellite Based Augmentation System (SBAS) such as Wide Area Augmentation System (WAAS), European Geostationary Navigation Overlay Service (EGNOS), Multi-Functional Satellite Augmentation System (MSAS), Omnistar, StarFire, etc.; Ground Based Augmentation Systems (GBAS) such as Local Area Augmentation System (LAAS); etc.), and/or can include any suitable data.

The receiver(s) 100 preferably functions to receive a set of satellite observations (e.g., satellite signals such as carrier phase and satellite code) from one or more satellites. In variants, the receiver can determine the location of the receiver (and/or external system) based on the satellite observations. The receiver is preferably in communication with the computing system. However, the receiver can be integrated with the computing system, and/or the receiver and computing system can be arranged in any suitable manner. The receiver is preferably a stand-alone device (e.g., a GNSS receiver, antenna). However, the receiver can be integrated into an external system (e.g., be a component of an automobile, aero vehicle, nautical vehicle, mobile device, etc.), can be a user device (e.g., smart phone, laptop, cell phone, smart watch, etc.), and/or can be configured in any suitable manner.

In variants of the system including more than one receiver, each receiver can be configured to receive satellite observations corresponding to a satellite constellation, to a carrier frequency (e.g., the L1, L2, L5, E1, E5a, E5b, E5ab, E6, G1, G2, G3, B1, B2, B3, LEX, etc. frequencies), and/or corresponding to any suitable source.

The reference station(s) 200 preferably function to receive a set of satellite observations (e.g., reference station satellite observations) and transmit the reference station satellite observations to the computing system (and/or to the receiver). The satellite observations from the reference station(s) can be used to determine corrections (e.g., local and/or spatially invariant corrections such as to account for atmospheric effects, to account for clock errors, etc.) to the set of satellite observations corresponding to the receiver. Each reference station is preferably communicably coupled to the computing system. However, the reference station can include the computing system and/or be coupled to the computing system in any suitable manner. The reference stations can be in communication with the receiver. The reference station(s) are preferably located within about 500 km of the receiver(s), but the distance between the reference stations and the receiver(s) can be any distance.

The reference station satellite observations can correspond to the same and/or a different set of satellites as the set of satellite observations received by the receiver. However, the reference station satellite observations can correspond to any suitable satellite observations.

The location (e.g., position) of the reference station(s) is preferably known to a high degree of accuracy (e.g., less than 1 mm, 1 cm, 1 dm, 1 m, etc. of uncertainty in the location of the reference station). The location of the reference station(s) can be static and/or dynamic.

The computing system preferably functions to generate GNSS corrections, update the GNSS corrections, determine and/or associate metadata with the GNSS corrections, and transmit the GNSS corrections to the receiver(s). However, the computing system can generate and/or process any suitable data and/or perform any function. The computing system is preferably coupled to the receiver(s) and/or the reference station(s). The computing system can be local (e.g., to a receiver, to a reference station, etc.), remote (e.g., server, cloud, etc.), and/or distributed (e.g., between a local computing system and a remote computing system).

The GNSS corrections are preferably used to correct one or more satellite observations. The GNSS corrections can be associated with (e.g., correspond to) individual satellites, sets of satellites, satellite constellations, satellite frequencies, every satellite, reference stations, and/or to any data source. The GNSS corrections are preferably state space representations (SSR), but can be observation space representations (OSR), and/or in any representation. The GNSS corrections can include spatially variant corrections (e.g., local corrections, atmospheric corrections such as to correct for ionosphere delay, troposphere delays, ionosphere gradient, etc.), spatially invariant corrections (e.g., global corrections, satellite clock, satellite bias, satellite orbit, reference station clock, reference station bias, etc.), static corrections, and/or any corrections. The GNSS corrections can be associated with a validity period, wherein the corrections can be invalid outside of the validity period (e.g., and must be refreshed or updated), permanently valid, valid until an updated GNSS correction is generated, and/or otherwise valid.

The GNSS corrections can include RTK corrections, PPP corrections, PPP-RTK corrections, SBAS corrections, and/or any suitable corrections. The format of the GNSS corrections can be ASCII, binary, and/or another format. Examples of supported formats include: RTCM, SPARTN, CLAS, LPP, NCT, CMR, CMR+, CMRX, RTX, TSIP, NMEA, RINEX, BINEX, NTRIP, SP3, and/or other protocols and formats.

The GNSS corrections are preferably associated with (e.g., correspond to, are valid within, are determined with, etc.) a correction region (e.g., tile(s), as shown for example in FIG. 4 , etc.), where the GNSS corrections are valid within (and/or determined within) the correction region. The correction region can be a predetermined region, a region based on the receiver, a region based on the application, a region based on the receiver and/or corrections user, a region based on the reference station user, and/or any suitable region. As shown for example in FIG. 5A, the correction region can be defined by a pair of latitude and longitude coordinates. However, the correction region can be defined using an earth-centered, earth-fixed ECEF cartesian coordinate system; using map coordinates (e.g., projected onto a plane); using a geocode; relative to a landmark; relative to geographic regions; relative to or based on settlements (e.g., towns, cities, villages, etc.); relative to or based on geopolitical entities (e.g., states, cities, counties, municipalities, countries, etc.); and/or can be defined in any manner. However, the GNSS corrections can be valid at specific locations, globally valid, and/or otherwise valid.

The area or size of the geographic region can be about 0.01°-100° (e.g., 0.01°-10, 0.10-5°, 1°-30, 1°-100, 2°-5°, 5°-10°, 4.5°-5.5°, 5°, 4°, 3°, 2°, 1°, etc. latitude and/or longitude), an extent smaller than 0.1° (latitude or longitude), an extent greater than 10°, an extent between 10 km and 750 km (e.g., 10-500 km, 25-100 km, 50-250 km, 100-300 km, 10 km, 25 km, 50 km, 100 km, 200 km, 500 km, etc.), less than about 10 km, an extent greater than about 750 km, and/or any suitable size.

In an illustrative example, the GNSS corrections can be associated with a geographic region as disclosed in U.S. patent application Ser. No. 17/374,523, titled “SYSTEM AND METHOD FOR DETERMINING GNSS POSITIONING CORRECTIONS” filed 13 Jul. 2021, which is incorporated in its entirety by this reference.

The GNSS corrections can be updated (e.g., at a predetermined time such as based on the type of correction, the intended application, the external system, the target receiver position accuracy, target receiver position integrity, etc.) and/or fixed. The corrections can be updated at predetermined times (e.g., 1 s, 5 s, 10 s, 30 s, 60 s, 2 min, 5 min, 10 min, 20 min, 30 min, 60 min, 2 hr, 4 hr, 8 hr, 12 hr, 24 hr, etc.), responsive to a trigger (e.g., change in weather, change in temperature, change in receiver position, change in satellites in view of the receiver, etc.), manually (e.g., responsive to a user request for updated corrections), and/or with any suitable timing. Different GNSS correction types can be generated at or for the same or different time (e.g., a full correction set can be generated for an epoch, for different timeframes, at the same time, at different times, etc.).

In variants, different portions of the GNSS corrections can be updated at different frequencies. In a first illustrative example, as shown in FIG. 6 , spatially invariant corrections can be updated at a first frequency and spatially variant corrections can be updated at a second frequency, where the first frequency is greater than the second frequency. In a second illustrative example, ionospheric delays can be updated at a first frequency and tropospheric delays can be updated at a second frequency, where the first frequency is greater than the second frequency. In a third illustrative example, satellite clock corrections can be updated at a first frequency and satellite orbit corrections can be updated at a second frequency, where the first frequency is greater than the second frequency. However, the first frequency can be less than or equal to the second frequency.

In variants, the set of corrections can include a consistency set, where corrections of the consistency set can be used together for determining the receiver position. The consistency sets are preferably defined based on a time duration, but can be defined based on a correction generation method, an application, a receiver, and/or otherwise be defined. The time duration can be the update frequency, the shortest update frequency of a subset of the corrections, the longest update frequency of a subset of the corrections, a predetermined time (e.g., 1 s, 2 s, 5 s, 10 s, 14 s, 30 s, 45 s, 60 s, 2 min, 5 min, 10 min, 30 min, 45 min, 60 min, 90 min, 120 min, 3 hrs., 6 hrs., 12 hrs., 24 hrs., etc.; based on a receiver property such as speed, position, etc.; based on an application; etc.), a number of satellite observations (e.g., after a predetermined number of satellite observations have been received, processed, etc.), and/or other suitable time. Using corrections corresponding to different consistency sets can generate an incorrect receiver position and/or can increase the amount of time it takes for the receiver position determination to converge. However, using corrections corresponding to different consistency sets can converge in less than or an equal amount of time and/or can generate an receiver position with the same or greater accuracy as using corrections corresponding to the same consistency set. In an illustrative example as shown in FIG. 6 , a consistency set can include (e.g., correspond to) all corrections generated between updates to a spatially variant correction. In this illustrative example, each update to a spatially invariant correction is included in the consistency set (e.g., as the spatially invariant correction is updated, the spatially invariant correction is updated and included within the consistency set). In this illustrative example, the consistency set can be incomplete (e.g., does not include spatially invariant corrections) when the spatially variant corrections are updated, until another update to the spatially invariant corrections. However, the consistency set can be referenced to a spatially invariant correction, a subset of the spatially variant corrections (e.g., updates to an ionospheric delay, updates to a tropospheric delay, etc.), a predetermined time (e.g., absolute time, relative time), and/or be otherwise defined or referenced.

The GNSS corrections are preferably associated with (e.g., include) metadata. The metadata functions to provide information about the GNSS corrections to facilitate their storage, transmission, and/or use in determining a receiver position.

In variants, the metadata can include a correction region (e.g., location, area), a correction type (e.g., spatially invariant correction such as satellite orbit error, satellite clock error, satellite bias, code bias, phase bias, pseudorange bias, etc.; spatially variant corrections such as ionosphere delay, troposphere delay, ionosphere gradient, etc.; etc.), a correction format, a tag (e.g., an identifier such as for update time, most recent update, consistency set, timestamp, epoch identifier, serial identifier, version number, etc.), secure information, signatures (e.g., from the correction supplier), data integrity indicators, information relating how to interpret the corrections (or corrections data), and/or any suitable information. The tag is preferably serially incremented for each successive correction for a given correction region-correction type combination (e.g., indicating which correction for the given correction region-correction type combination is most recent), but can or be otherwise determined. In one example, different “clock” corrections for different correction regions can have the same tag value. In a second example, a “clock” and an “ionosphere” correction for the same correction region can have the same tag value.

The metadata is preferably in a different format from the corrections format (e.g., HTTP/1, gPRC, TCP, etc.), but can be in the same format. The metadata can be included in: a header, wrapper, appended to the correction, or otherwise packaged with the correction.

In variants, the computing system can include a correction generator (e.g., a correction module), a gateway, a storage module, a distribution module, a positioning module, and/or any suitable module(s). Each module can be associated with an entity generating corrections, an entity operating the GNSS receiver(s), a distribution entity, a third party, and/or any suitable entity. In an illustrative example, a correction generator, a gateway, a storage module, and a distribution module can be hosted on a cloud or remote server separate from a computing system (e.g., a GNSS receiver computing system) hosting the positioning module. However, the correction generator, gateway, storage module, distribution module, and/or positioning module can be distributed between one or more local and one or more remote computing systems in any manner (e.g., all be hosted on the same computing system).

The correction generator preferably functions to generate the GNSS corrections (and/or the metadata). The correction generator can additionally or alternatively validate the GNSS corrections and/or otherwise function. The correction generator preferably generates the GNSS corrections using the reference station satellite observations, but can generate the GNSS corrections based on GNSS receiver satellite observations, sensor data, logged data (e.g., weather data, data retrieved from a database, etc.) and/or any data. The correction generator can generate the GNSS corrections according to a model, using machine learning, using a Kalman filter, using a Gaussian process (e.g., as disclosed in as disclosed in U.S. patent application Ser. No. 16/983,706 titled “SYSTEM AND METHOD FOR GAUSSIAN PROCESS ENHANCED GNSS CORRECTIONS GENERATION” filed 3 Aug. 2020 incorporated in its entirety by this reference), and/or otherwise generate the GNSS corrections. In examples, the corrections can be determined (e.g., generated) and/or validated as disclosed in U.S. patent application Ser. No. 16/589,932 titled ‘SYSTEMS AND METHODS FOR DISTRIBUTED DENSE NETWORK PROCESSING OF SATELLITE POSITIONING DATA’ filed 1 Oct. 2019 or U.S. patent application Ser. No. 16/865,077 titled ‘Systems and Methods for High-Integrity Satellite Positioning’ filed 1 May 2020, each of which is incorporated in its entirety by this reference.

The corrections data can include continuous corrections (e.g., a function, a surface, a volume, a manifold, etc.), discrete corrections (e.g., associated with one or more grid points or other discrete locations), and/or have any suitable form. In an illustrative example as shown for example in FIGS. 8A-8F, a correction (e.g., an atmospheric correction) can include (e.g., be represented by) a continuous correction (e.g., a fitting function such as a polynomial fitting function to a model of the atmospheric delays and/or electron counts) and a set of discrete corrections (e.g., grid points such as associated with a residual of a fit of the continuous corrections to an exact or modelled correction value). The corrections (e.g., corrections data) can be any suitable corrections as disclosed in U.S. patent application Ser. No. 17/374,523 titled “SYSTEM AND METHOD FOR DETERMINING GNSS POSITIONING CORRECTIONS” filed 13 Jul. 2021, which is incorporated in its entirety by this reference. However, the corrections can have any suitable representation.

The gateway functions to receive (e.g., transmit, route, etc.) the GNSS corrections (and/or subsets thereof) from the correction generator (e.g., via a request, subscribed stream, API, etc.). The gateway can be hosted by a third party separate from the correction generator, can be hosted by the same party as the correction generator, and/or can be otherwise hosted. The gateway can be connected to the storage module, distribution module, and/or other module. The gateway can distribute the GNSS corrections based on the metadata, receiver data, storage module information, distribution module information, and/or any suitable information.

The storage module preferably functions to store the GNSS corrections (or subsets thereof). The storage modules can correspond to long-term (e.g., permanent) memory or short-term (e.g., transient) memory. Examples of storage modules include caches 365, buffers, databases, look-up tables, RAM, ROM, and/or any type of memory. The storage modules preferably only store the most recently determined (e.g., updated) GNSS corrections, but can store one or more previous GNSS corrections and/or any GNSS corrections. In an illustrative example, GNSS corrections (and/or subsets thereof) can be transmitted to (e.g., routed to) the storage module after they have been updated. However, any GNSS corrections (or subsets thereof) can be transmitted to the storage module(s).

In variants including more than one storage module, each storage module can be associated with a receiver, a receiver entity, a corrections service entity, a GNSS correction region, a correction region-correction type combination, a GNSS corrections format, a GNSS correction type, a correction tag, and/or be associated with any entity and/or data.

The distribution module preferably functions to distribute (e.g., transmit) GNSS corrections to the GNSS receiver(s) and/or a third party operator (such as an operator of the GNSS receivers). The distribution module can additionally or alternatively convert the GNSS corrections to a format usable (e.g., readable by) the GNSS receiver and/or any other functions. For example, the distribution module can receive (or determine) a corrections format from the GNSS receiver and can transmit (or process to convert and transmit) corrections in the corrections format to the GNSS receiver. The distribution module is preferably in communication with the storage module, but can be in communication with the corrections generator (e.g., to indicate a format to generate or convert the corrections to), the gateway, the GNSS receiver, and/or any module(s) and/or component(s). The GNSS corrections can be distributed automatically or manually. The GNSS corrections can be distributed at a predetermined frequency (e.g., an update frequency, a satellite observation detection frequency, etc.), at predetermined times (e.g., every 1 s, 2 s, 5 s, 10 s, 30 s, 1 min, 2 min, 5 min, 10 min, 30 min, 1 hr, 2 hrs., 4 hrs., 6 hrs., 12 hrs., 24 hrs., etc.), responsive to a trigger (e.g., a call for GNSS corrections, updated GNSS corrections, etc.), in response to GNSS correction receipt (e.g., at the gateway, at the storage module), in response to GNSS correction publication (e.g., from the storage module, from the gateway, from the message broker, etc.), and/or with any timing. The distribution module can include a communication module. The communication module can be a long-range (e.g., internet, cellular, satellite communication, radio, fiber optic, etc.) and/or a short-range (e.g., Bluetooth, optical, etc.) communication module.

The distribution module preferably distributes the GNSS corrections based on the metadata. In a first specific example, as shown in FIG. 4 , the GNSS corrections can be distributed based on a receiver locality, where the receiver locality can be the approximate (e.g., within approximately 1° latitude and/or 1° longitude of the actual, within approximately 500 km of the actual, etc.) position of the receiver, a geographic region that the receiver is intended to be used in, a geographic region associated with a third party user or operator of the receiver, and/or any suitable locality. The receiver locality preferably uniquely corresponds to or is associated with a geographic region (e.g., tile), but can correspond to or be associated with a plurality of geographic regions and/or any suitable geographic region(s). The receiver locality can be a coordinate, a GNSS correction region, a geocode, and/or be otherwise formatted. A receiver locality can be associated with one or more correction regions (e.g., correction regions encompassing all or a portion of the receiver locality, within a predetermined distance of the receiver locality, pre-associated with the receiver locality, geographic regions, area(s), etc.). For instance, receiver A in FIG. 4 can receive GNSS corrections corresponding to the red, green, yellow, and/or purple regions; receiver B in FIG. 4 can receive GNSS corrections corresponding to the red region; receiver C in FIG. 4 can receive GNSS corrections corresponding to the green and/or purple regions; receiver D in FIG. 4 can receive GNSS corrections corresponding to the yellow region; and receiver E in FIG. 4 does not receive any GNSS corrections. In a second illustrative example, the GNSS corrections can be distributed based on the format of the GNSS corrections that can be interpreted by the GNSS receiver. In a third illustrative example, only updated GNSS corrections (e.g., as determined by the tag and/or timestamp) can be transmitted. However, the GNSS corrections can be distributed in any manner.

The receiver locality can be determined from (or based on) a nearest cellular tower, cellular tower trilateration, a WIFI signal, the last known receiver position, a satellite connection (e.g., satellite network), computer vision (e.g., to identify objects in the environment of the receiver), user input, reference station signal (e.g., a nearest reference station), a transponder signal, a previous receiver position (e.g., determined from a previous iteration of the method, receiver position calculated from the satellite observations without convergence, receiver position calculated from the satellite observations without validation, receiver position calculated from the satellite observations such as using pseudorange to calculate an approximate receiver location, receiver position determined prior to an outage, etc.), receiver position estimated based on dead reckoning, and/or can be otherwise determined.

In variants, the distribution module can distribute subsets of the GNSS corrections (e.g., different correction types) at different frequencies. For example, the spatially invariant corrections can be distributed at or near a first frequency and the spatially variant corrections can be distributed at or near a second frequency. In an illustrative example, the distribution module can only distribute subsets of the GNSS corrections that have been updated. In a second illustrative example, the distribution module can distribute GNSS corrections only when a consistency set is complete (e.g., includes local and spatially invariant corrections). However, the distribution module can distribute any GNSS corrections (or subset thereof) with any timing.

In variants, the distribution module can include (and/or be) a message oriented middleware such as a message broker 385 or a message queue. In related variants, the distribution module can include a translator, which functions to convert or modify the format of the GNSS corrections. The message broker can be generic, specific to a correction type, specific to a correction region, and/or otherwise specialized. In a specific example, the distribution module can handle direct receiver communication (e.g., retrieve corrections from the cache, push data from the message broker to the receiver), while the message broker can publish the most recent corrections for all correction regions and/or correction types from the cache (e.g., for one or more distribution modules' consumption).

The positioning module preferably functions to determine the receiver position. The receiver position is preferably determined to a high accuracy (e.g., less than about 1 mm, 5 mm, 1 cm, 2 cm, 5 cm, 1 dm, 2 dm, 5 dm, 1 m, 2 m, 5 m, etc.) and/or to a high integrity (e.g., total integrity risk <10⁻⁴, <10⁻⁵, <10⁻⁶, <10⁻⁷, <10⁻⁸, <10⁻⁹, <10⁻¹⁰/hr, etc.); however, the receiver position can be determined to any accuracy and/or integrity. In examples, the position module can calculate the receiver position and/or otherwise operate as a ‘position module’ as disclosed in U.S. patent application Ser. No. 16/865,077 titled ‘Systems and Methods for High-Integrity Satellite Positioning’ filed 1 May 2020. However, the positioning module can be otherwise configured.

4. Method.

The method preferably functions to generate and/or disseminate data (e.g., a set of corrections), where the corrections can be used to estimate (e.g., calculate, determine) the receiver position. Steps and/or substeps of the method can be performed iteratively (e.g., for different epochs, for the same epoch, etc.), sequentially, and/or in any suitable order. The steps and/or substeps of the method can be performed in series and/or in parallel. The steps and/or substeps are preferably performed by a system as described above, but can be performed by any system.

Receiving the satellite observations S100 functions to measure and/or detect a set of satellite signals, where each satellite signal is associated with a satellite, at a reference station and/or a receiver. Satellite signals corresponding to the same set of satellites are preferably received at the GNSS receiver(s) and the reference station(s); however, the GNSS receiver(s) and the reference station(s) can receive satellite signals from any satellites. The satellite signals can include satellite code, satellite pseudorange, carrier phase, and/or any suitable data. Receiving the satellite observations can include transmitting the satellite observations to the computing system (e.g., a remote computing system, a corrections generator, etc.), to the GNSS receiver, and/or to any suitable endpoint. Receiving the satellite observations can optionally include monitoring the satellite observations for one or more predetermined event (e.g., fault, outlier, etc.).

Determining GNSS corrections S200 functions to determine a set of GNSS corrections that can be used to estimate a receiver position and/or correct the set of satellite observations. The GNSS corrections are preferably determined by a computing system (e.g., a correction generator of a computing system), but can be determined by any suitable component. The corrections are preferably determined based on satellite observations made at one or more reference stations, but can be made based on any suitable data set. The satellite observations preferably correspond to (e.g., include observations from) one or more satellite positioning constellations, but can correspond to an auxiliary satellite constellation and/or any satellites. Determining the GNSS corrections can include: determining spatially variant corrections, determining spatially invariant corrections, validating the GNSS corrections, and/or any steps.

The GNSS corrections are preferably determined (e.g., independently determined for) for different geographic locations (e.g., a plurality of spatial regions that cover a geographic region such as a city, county, parish, state, country, continent, ocean, sea, lake, etc.), but can be determined over a geographic region, at reference points, at reference lines, and/or be determined for any region. For example, different GNSS corrections of the set of GNSS corrections can be determined or validated for each geographic region. However, the GNSS corrections can additionally or alternatively be validated in a given geographic region, be globally determined, and/or otherwise be determined or validated.

In a first variant, the GNSS corrections can be determined in a single format. In these variants, the GNSS correction format can be modified and/or changed to another format for example using a translator or data broker. In a related variant, the GNSS receiver can transmit a corrections format to the computing system, where the GNSS corrections are determined in that corrections format (e.g., correction data of the GNSS corrections can be determined in the corrections format, where the correction data can be converted to another format). In a second variant, the GNSS corrections can be determined in a plurality of formats (e.g., correction data of the GNSS corrections can be determined in a plurality of formats). However, the GNSS corrections can be determined in any format.

The GNSS corrections can be determined based on pierce points, pierce angles, models, machine learning (e.g., neural networks), and/or in any manner. In some variants, the atmosphere can be divided into one or more shells (e.g., 2 thin shells, 3 thin shells, 5 thin shells, any suitable number of shells between about 1 and 20, greater than 20 thin shells, etc.) where each shell can be modeled to determine corrections (dependent or independent of other shells).

In a first specific example, at least one of ionospheric or tropospheric effects can be modelled as a function of least one of a pierce point or a pierce angle for satellite rays for each satellite of the set of satellites (e.g., a line of sight vector between a receiver such as a mobile receiver, a reference station, etc. and each satellite). In a first variation of the first specific example, ionospheric effects for each of the set of satellites can be modelled as a function of pierce point and pierce angle for lines of sight between the mobile receiver and each of the set of satellites. In a second variation of the first specific example, tropospheric effects for each of the set of satellites can be modelled as a function of pierce point (e.g., where a static correction for pierce angle for lines of sight between the mobile receiver and each of the set of satellites can be used).

In a second specific example, at least one of ionospheric or tropospheric effects can be modelled using a Gaussian process (e.g., using undifferenced satellite observations, using single differenced satellite observations, using double differenced satellite observations, etc. such as where the Gaussian process does not include differencing satellite observations). In a variation of the second specific example, a covariance function relating a first pierce point associated with a first satellite observation and a second pierce point associated with a second satellite observation comprises a squared exponential function. However, any suitable covariance function can be used.

In a third specific example, the GNSS corrections can be determined (and/or validated) as disclosed in U.S. patent application Ser. No. 16/983,706 titled “SYSTEM AND METHOD FOR GAUSSIAN PROCESS ENHANCED GNSS CORRECTIONS GENERATION” filed 3 Aug. 2020, U.S. application Ser. No. 16/817,196 titled “SYSTEMS AND METHODS FOR REAL TIME KINEMATIC SATELLITE POSITIONING” filed 12 Mar. 2020, U.S. application Ser. No. 16/865,077 titled SYSTEMS AND METHODS FOR HIGH-INTEGRITY SATELLITE POSITIONING” filed 1 May 2020, and/or U.S. application Ser. No. 16/589,932 titled “SYSTEMS AND METHODS FOR DISTRIBUTED DENSE NETWORK PROCESSING OF SATELLITE POSITIONING DATA” filed 1 Oct. 2019, each of which is incorporated its entirety by this reference, or otherwise be determined or validated. The first, second, and third specific examples can be combined in any manner (e.g., pierce points and/or angles can be used as inputs to a Gaussian process) and/or used in isolation.

Determining GNSS corrections can additionally include attaching metadata to the correction. The metadata can be included internal to (e.g., appended to) or external from the corrections data. The metadata preferably includes the GNSS corrections format, the GNSS corrections type, the GNSS correction region, and a tag. However, the metadata can additionally or alternatively include any suitable data (e.g., as described above). The metadata is preferably generated concurrently with determining the GNSS corrections, but can be generated at any time relative to the GNSS corrections. The metadata can be determined based on the correction model, from the corrections data, be predefined, and/or be otherwise determined.

Generating the metadata preferably includes modifying (e.g., incrementing) the metadata (e.g., the tag value) associated with the GNSS correction. The tag value (and/or other metadata) is preferably modified every time the corrections data is updated (e.g., recalculated). However, the tag (and/or other metadata) can be updated when corrections data associated with a consistency set is modified, when the corrections data changes, after a predetermined number of corrections data updates, at predetermined times, and/or with any timing. For example, as shown in FIGS. 5A and 5B, each time a GNSS correction (such as the atmospheric correction, clock, orbit, bias, etc.) is updated, the tag value can be increased by 1. However, the tag can be otherwise modified.

S200 can include updating the GNSS corrections S250. The GNSS corrections can be updated (e.g., redetermined such as according to S200 using new data, using a different analysis or generation method, etc.) at predetermined times (e.g., before, during, and/or after an epoch), at a predetermined frequency, responsive to a trigger (e.g., a call for updated GNSS corrections, acquisition of new data, acquisition of a predetermined amount of new data, a new satellite entering line of sight of a receiver or reference station, a satellite leaving line of sight of a receiver or reference station, etc.), and/or with any suitable timing. The GNSS corrections are preferably updated in the same manner as they are determined (e.g., as described above), but can be updated in a different manner (e.g., using a different process, using different covariance functions relating the data within a Gaussian process, etc.).

S200 can include validating the GNSS corrections. However, the GNSS corrections can be independently validated, not be validated, and/or have any suitable validity. For example, the GNSS corrections can be validated by comparing corrections generated using a first set of satellite observations and a second set of satellite observations (e.g., where each set can be independently used to determine satellite corrections and those satellite corrections compared to validate the GNSS corrections). However, the GNSS corrections can be validated based on a model (e.g., the validity of the model), comparison to other data (e.g., comparison to weather data, based on a receiver position determined using the corrections, etc.), and/or otherwise be validated.

Storing the GNSS corrections S300 functions to cache the GNSS corrections for subsequent retrieval. The GNSS corrections are preferably received from a separate system or party (e.g., a corrections generator), but can be received from a common system or party and/or any suitable source. The GNSS corrections are preferably stored by a third party (e.g., a vehicle fleet manager, an OEM, a memory module thereof, etc.), but can be stored by the corrections generator (and/or memory module or other module of a computing system hosting the corrections generator), the receiver, and/or other system.

The GNSS corrections are preferably stored based on (e.g., according to) the metadata, but can be stored in any manner. In an illustrative example, when the tag (e.g., cache key) has changed, the GNSS corrections are cached, and when the tag has not changed, the GNSS corrections are not cached. In a related example, when the tag associated with a consistency set changes, the GNSS corrections associated with the consistency set can be cached (e.g., whether or not the tag associated with the subset of GNSS corrections has changed). The GNSS corrections are preferably stored in one or more storage modules (e.g., of the computing system), but can be stored at any suitable component. In a specific example, storing the GNSS corrections includes caching the GNSS corrections.

Only updated (e.g., most recent, new, etc.) GNSS corrections (or subsets thereof) are preferably stored. However, one or more previous GNSS corrections (or subset thereof) can be stored. The updated GNSS corrections can be identified based on the metadata (e.g., tag), a timestamp, a change in the GNSS corrections, and/or in any manner. Identifying the updated GNSS corrections is preferably performed by a gateway, but can be performed by the storage module, the distribution module, a GNSS receiver, a third party computing system, and/or any suitable component.

Transmitting the GNSS corrections S400 functions to transmit the GNSS corrections to the GNSS receiver. S400 is preferably performed by a distribution module, but can be performed by any suitable module and/or system. Only the GNSS corrections corresponding to the receiver locality (e.g., an approximate receiver position such as accurate to within about 1 km, 10 km, 100 km, 1000 km, etc.) are preferably transmitted. For example, only corrections where an area associated with the corrections that matches (e.g., the receiver locality is within the area or geographic region as shown for example in FIG. 4 ; the receiver locality is within a threshold distance such as 100 m, 500 m, 1 km, 2 km, 5 km, 10 km, 50 km, 100 km, etc. of the area or geographic region; etc.) the receiver locality can be transmitted. However, additionally or alternatively, GNSS corrections corresponding to regions adjacent to the receiver locality can be transmitted (e.g., to act as a buffer such as in case connectivity between the receiver and computing system is lost, because a receiver locality uncertainty straddles two or more geographic regions, etc.) and/or any corrections can be transmitted. The GNSS corrections are preferably transmitted in a format that is readable by (or otherwise interpretable by) the GNSS receiver. However, additionally or alternatively, the distribution module can provide instructions for how to modify the GNSS corrections format, can reformat the GNSS corrections so that they are readable by the GNSS receiver, the receiver can change the GNSS corrections format, and/or the GNSS corrections can be otherwise formatted. The GNSS corrections format can be determined based on the metadata (e.g., a format signifier), the corrections data, and/or can otherwise be determined. The GNSS corrections are preferably transmitted from the computing system (e.g., a distribution module of the computing system) to the receiver, but can be transmitted between any two endpoints (e.g., to a third party computing system). All or a subset of GNSS corrections corresponding to each receiver locality can be transmitted.

The GNSS corrections can be transmitted automatically, semi-automatically (e.g., responsive to a trigger such as an update to a correction, an update to a correction associated with the receiver locality, a request for current and/or updated corrections, based on a change in a receiver locality, etc.), and/or manually (e.g., responsive to a user input). The GNSS corrections can be transmitted at predetermined times (e.g., every 1 s, 2 s, 5 s, 10 s, 20 s, 30 s, 45 s, 60 s, 2 min, 3 min, 5 min, 10 min, 20 min, 30 min, 45 min, 60 min, etc.), based on a receiver locality (e.g., when the receiver locality crosses a boundary between GNSS corrections, when a receiver locality changes by at least a threshold distance, etc.), when the GNSS corrections are updated (e.g., when a new correction has been determined), when the set of satellites changes (e.g., when a new satellite comes into the line of view of the receiver, when a new satellite is in the line-of-view of the reference station, when a satellite leaves the line-of-view of the receiver, when a satellite leaves the line-of-view of the reference station, etc.), and/or with any timing.

The GNSS corrections (e.g., corrections data, metadata, etc.) are preferably transmitted in an opaque manner (e.g., encrypted, as binary data, in a format that can only be interpreted by a computing system configured to read the GNSS corrections, etc.), which can be beneficial for preventing unauthorized users from accessing or using the GNSS corrections, for preventing illegitimate GNSS corrections (e.g., supplied by bad actors to imitate the actual data) from being used or provided, and/or can otherwise be beneficial. However, the GNSS corrections can be provided as plain text, in an unobscured or not opaque manner, and/or otherwise be provided.

The GNSS corrections can be transmitted in the same or different messages (e.g., a different message for each correction, a different message for each consistency set, a different message for each geographical region, etc.). The GNSS corrections can be transmitted in any order. For example, spatially invariant corrections can be provided before spatially variant corrections, spatially variant corrections can be transmitted before spatially invariant corrections, each correction can be transmitted in a predetermined order (e.g., clocks before orbits before atmospheric corrections; orbits before clocks before atmospheric corrections; clocks before atmospheric corrections before orbits; orbits before atmospheric corrections before clocks; atmospheric corrections before clocks before orbits; atmospheric corrections before orbits before clocks; etc.), and/or corrections can be provided in any order.

The GNSS corrections data is preferably transmitted to the GNSS receiver (and/or third party) in a format (e.g., representation) that the third party and/or GNSS receiver can determine the corrections. However, the corrections data for the receiver locality or position can be transmitted (e.g., the corrections values such as predicted delays; rather than a model, fit, grid points, or other representation of the corrections values; can be transmitted) and/or the corrections data can be transmitted in any manner. The GNSS corrections can include instructions for how to process and/or interpret the GNSS corrections data (e.g., the format the data is in, how to convert between formats, etc.).

In variants, when the GNSS corrections include discrete corrections (e.g., grid points), the discrete corrections associated with a region can be transmitted in a raster order (e.g., as shown for example in FIG. 8A), in a boustrophedonic pattern (e.g., as shown for example in FIG. 8B), in a spiral pattern (e.g., as shown for example in FIGS. 8C and 8E), according to a space filling curve (e.g., a Hilbert curve, Peano curve, as shown for example in FIGS. 8D and 8F, etc.), and/or in any suitable manner. The pattern can be (e.g., can traverse, can start, etc.) latitudinally, longitudinally, diagonally, vertically, aligned to a cardinal or subcardinal direction, horizontally, and/or in any suitable direction. The pattern can be specified in the metadata, can be predetermined, can be fixed (e.g., always transmitted in a predetermined manner), can be requested by the GNSS receiver (and/or third party associated therewith), and/or can otherwise be determined or identified by the GNSS receiver and/or third party.

Geographic regions (e.g., correction regions) are preferably associated with between 3-1000 (such as 3, 4, 5, 6, 8, 10, 15, 20, 25, 30, 40, 50, 100, 150, 200, 300, 400, 500, 1000, values therebetween, etc.) discrete corrections (such as grid points), less than 3 discrete corrections (e.g., 0 grid points, 1 grid point, 2 grid points), greater than 1000 discrete corrections, and/or any suitable number of grid points or other discrete corrections. The discrete corrections are preferably separated by between about 10-1000 km such as 50 km, 100 km, 200 km, 500 km, 750 km. In an illustrative example, discrete corrections can be spaced by about 1° latitude and/or 1° longitude (e.g., between adjacent or nearest neighboring discrete corrections). However, the discrete corrections can be separated by less than 10 km, more than 1000 km, 0.01°-10° latitude or longitude, less than 0.01° latitude or longitude, greater than 10° latitude or longitude, and/or by any suitable distance.

In variants, such as when the receiver locality corresponds to a plurality of GNSS corrections, each GNSS correction of the plurality of GNSS corrections, the GNSS corrections corresponding to the previous region that the receiver was in, the GNSS corrections corresponding to a new region that the receiver is in, the most recent (e.g., most recently updated) GNSS corrections, interpolated GNSS corrections (e.g., interpolated between all or a subset of the plurality of regions, interpolated between a plurality of discrete corrections, etc.), and/or any suitable GNSS corrections can be transmitted.

In a first variant, as shown for example in FIGS. 5A and 7A, transmitting the GNSS corrections can include transmitting the full GNSS corrections set. The full GNSS correction set is preferably transmitted when the consistency set has been updated, but can additionally or alternatively be transmitted at the initialization of the method, when a receiver locality changes (e.g., when a receiver enters a new correction region), after a loss in corrections signal (e.g., a connection between the receiver and a remote computing system is recovered), when a receiver position and/or residual determined using the GNSS corrections exceeds a threshold, when the set of satellites and/or reference stations changes, responsive to a request for the full corrections set, and/or at any time.

In a second variant, as shown for example in FIGS. 5B and 7B, transmitting the GNSS corrections can include transmitting a subset of GNSS corrections. The subset of GNSS corrections preferably corresponds to individual GNSS corrections that have been updated (e.g., since the full GNSS corrections were transmitted, since the most recent GNSS corrections were transmitted, since a consistency set of GNSS corrections were determined, etc.). However, any GNSS corrections (or subsets thereof) can be transmitted. The updated GNSS corrections can be determined as described above and/or in any manner. The subset of GNSS corrections are preferably transmitted after (e.g., immediately after such as within a threshold time after the GNSS correction update) the GNSS corrections have been updated (e.g., when a tag value changes), but can be transmitted when the consistency set is updated, at predetermined times (for example, after the predetermined time has elapsed, the GNSS corrections can be checked to determine whether any corrections have been updated or modified), responsive to a request for updated corrections, and/or with any timing.

In some variations of S400, only a subset of the GNSS corrections can be transmitted. The subset of GNSS corrections can be transmitted subject to one or more constraints (e.g., satellite constraints, satellite constellation constraints, corrections constraints, etc.). Corrections that meet the condition of the constraint can be excluded from transmission and/or corrections that do not meet the condition of the constraint can be excluded from transmission. Examples of constraints include: jurisdictional constraints, validity or integrity constraints, temporal constraints (e.g., a threshold amount of time passed since the last fault associated with a data source, a threshold amount of time that a satellite has been in view, etc.), numerical constraints (e.g., a maximum number of satellites, a minimum number of satellites, a maximum number of corrections per satellite, a minimum number of corrections per satellite, etc.), and/or any suitable constraints. In a first example, when a GNSS receiver (and/or third party or managing entity) is located in Japan (e.g., receiver locality is determined to be in Japan), corrections associated with satellites from the Beidou satellite constellation may not be transmitted to the GNSS receiver (and/or third party) or vice versa (e.g., GNSS receivers with a locality in China may not receive corrections associated with QZSS satellites). In a second example, only spatially invariant or spatially variant corrections can be transmitted to the GNSS receiver (or third party). In a third example, only corrections data can be transmitted (e.g., metadata or other data associated with the GNSS corrections is not transmitted). However, any suitable subset of the GNSS corrections (or each correction thereof) can be transmitted.

S400 can include transmitting auxiliary data, where the auxiliary data can be used to facilitate the determination of the receiver position or locality, facilitate the operation of an external system, and/or otherwise be used. The auxiliary data can be transmitted at the same frequency and/or time as the GNSS corrections and/or be transmitted at a different frequency and/or time. For instance, the auxiliary data can be transmitted once (e.g., once per consistency set, at a first iteration of the method, etc.). However, the auxiliary data can be transmitted based on a change in the auxiliary data, based on a change in an environmental condition of the GNSS receiver (e.g., a change in the time of day, change in weather, etc.), and/or be transmitted at any suitable time. However, the auxiliary data can be transmitted with any suitable frequency. Auxiliary data can be static and/or variable. Examples of auxiliary data include: landmarks (e.g., visual odometry landmarks such as pixels, super pixels, pixel blocks, visual features, etc.; locality landmarks such as buildings, streets, maps, etc.; etc.), weather forecasts and/or data (e.g., almanac data), and/or any suitable auxiliary data.

Determining the receiver position S500 functions to determine the receiver position to high accuracy (e.g., receiver position is known to within 1 mm, 2 mm, 5 mm, 1 cm, 2 cm, 5 cm, 1 dm, 2 dm, 5 dm, 1 m, 2 m, 5 m, 1 dam, etc.) and/or with high integrity (e.g., total integrity risk ≤1×10⁻⁴/hr, ≤1×10⁻⁵/hr, ≤1×10⁻⁶/hr, ≤1×10⁻⁷/hr, ≤1×10⁻⁸/hr, etc.). The receiver position is preferably determined by the computing system (e.g., positioning module such as of the GNSS receiver), but can be determined by the computing system and/or any component. Determining the receiver position can include: determining a carrier phase ambiguity, calculating the receiver position based on the carrier phase ambiguity, determining a baseline vector between a receiver and a reference station, determining an absolute receiver position (e.g., by applying the baseline vector to the reference station location), and/or any steps.

Determining the receiver position can include correcting the set of satellite observations based on the GNSS corrections which can function to decrease and/or remove the impact of errors on the satellite observations. The GNSS corrections is preferably the full set of corrections (e.g., includes a correction for each correction type), but can alternatively be a subset thereof. The full set of corrections are preferably the most recent corrections for each respective correction type (e.g., can have different tag values for each correction type), but can alternatively be the most recent consistency set (e.g., have the same tag value; be the highest or most recent tag value with all correction types received by the receiver) or be any other suitable correction set. Correcting the set of satellite observations can include subtracting the GNSS corrections and the satellite observations, adding the GNSS corrections to the satellite observations, transforming the satellite observations based on the GNSS corrections, and/or otherwise use the GNSS corrections to correct the set of satellite observations.

In variants, the receiver position and/or protection level can be transmitted to an external system, stored (e.g., cached), used to operate and/or control an external system, can be used to determine operation instructions for an external system (e.g., at a processor of an external system), and/or used in any manner.

In an illustrative example as shown in FIG. 3 , a system for providing GNSS corrections to a GNSS receiver can include: a set of reference stations configured to receive satellite observations corresponding to one or more satellites associated with one or more satellite constellations; a correction generator configured to determine GNSS corrections based on the satellite observations, where the GNSS corrections include spatially invariant corrections data, spatially variant corrections data, and where each piece of correction data is associated with metadata that can include a GNSS correction format, a GNSS correction type, an index (e.g., a tag) associated with a consistency set, and location (e.g., an area that the corrections are determined over or valid for); a gateway configured to store the GNSS corrections at a storage module and update stored GNSS corrections as updated GNSS corrections are generated; a distribution module configured to transmit the GNSS corrections to one or more GNSS receivers (or a third party that hosts, operates, or otherwise interfaces with the GNSS receivers), where the GNSS corrections are transmitted in a format readable by the GNSS receiver, and where the GNSS corrections are transmitted based on a locality of the GNSS receiver; and a positioning module configured to determine a receiver position (e.g., using the GNSS corrections).

In a second illustrative example, a method can include: receiving a stream of correction data associated with: a correction region, a correction type, a serial identifier (e.g., tag), and the correction data from a remote service (e.g., SSR service, corrections generator, etc.); caching the most recent corrections data using the correction region and correction type combination as a data cache key, the serial identifier as the data cache value, and the correction as the data; receiving a request from a receiver for corrections for a receiver locality; retrieving a full correction set, including the most recent corrections for each correction type, associated with the correction region(s) encompassing the receiver locality; sending the retrieved corrections to the receiver; while the receiver is associated with (e.g., located within) the geolocation, serially updating the receiver with the most recent correction data as the correction data is received at the cache; and repeating the method from full correction set retrieval in response to receiver location within a new locality. In a third example, the method includes providing a system configured to execute the second illustrative example. In a fourth example, the method includes receiving corrections data from a system configured to execute the second illustrative example or using the second illustrative example.

Embodiments of the system and/or method can include every combination and permutation of the various system components and the various method processes, wherein one or more instances of the method and/or processes described herein can be performed asynchronously (e.g., sequentially), concurrently (e.g., in parallel), or in any other suitable order by and/or using one or more instances of the systems, elements, and/or entities described herein.

As a person skilled in the art will recognize from the previous detailed description and from the figures and claims, modifications and changes can be made to the preferred embodiments of the invention without departing from the scope of this invention defined in the following claims. 

We claim:
 1. A system for distributing corrections to a GNSS receiver comprising: a corrections generator configured to generate a set of corrections based on satellite observations associated with a set of satellites measured at a set of reference stations, wherein each correction of the set of corrections comprises: an area associated with the correction; a tag; and correction data; a gateway configured to: receive the set of corrections; and update a set of stored corrections with the set of received corrections based on a tag associated with each correction of the set of stored corrections and the tag associated with each correction of the set of received corrections; and a distribution module configured to: connect to a GNSS receiver; determine a locality of the GNSS receiver; and transmit stored corrections of the set of stored corrections to the GNSS receiver when the area associated with the stored corrections matches the locality of the GNSS receiver; wherein correction data for a correction of the set of corrections comprises atmospheric corrections, wherein the atmospheric corrections are determined by modelling atmospheric effects as a function of at least one of a pierce point or a pierce angle for satellite rays for each satellite of the set of satellites.
 2. The system of claim 1, wherein the correction data for a correction of the set of corrections comprises state space representation data.
 3. The system of claim 1, wherein the atmospheric corrections are determined using a Gaussian process.
 4. The system of claim 1, wherein the set of corrections comprises discrete corrections arranged on a grid and continuous corrections.
 5. The system of claim 4, wherein the discrete corrections associated with the area are transmitted in a raster order.
 6. The system of claim 1, wherein the corrections generator is further configured to update correction of the set of corrections, wherein a tag associated with a correction of the set of corrections is modified when the correction is updated.
 7. The system of claim 1, wherein the area is an approximately five degree latitude by an approximately five degree longitude geographic region.
 8. The system of claim 1, wherein the set of corrections comprise a correction for at least one of: ionosphere delays, troposphere delays, satellite clock error states, satellite orbit error states, code biases, or phase biases.
 9. The system of claim 1, wherein the distribution module is further configured to transmit visual odometry landmarks within the area to the GNSS receiver.
 10. A method for distributing corrections to a GNSS receiver comprising: generating a set of corrections based on satellite observations associated with a set of satellites measured at a set of reference stations, wherein each correction of the set of corrections comprises: an area associated with the correction; a tag; and correction data; updating a stored correction of a set of stored corrections with a correction of the set of generated corrections based on a tag associated with the stored correction and the tag associated with the correction of the set of generated corrections; determining a locality of the GNSS receiver; and transmitting stored corrections of the set of stored corrections to the GNSS receiver when the area associated with the stored corrections matches the locality of the GNSS receiver; wherein generating the set of corrections comprises modelling atmospheric effects as a function of at least one of a pierce point or a pierce angle for satellite rays for each satellite of the set of satellites.
 11. The method of claim 10, wherein the correction data for a correction of the set of corrections comprises state space representation data.
 12. The method of claim 10, wherein the atmospheric corrections are modelled using a Gaussian process.
 13. The system of claim 10, wherein the set of corrections comprises discrete corrections arranged on a grid and continuous corrections.
 14. The system of claim 13, wherein the discrete corrections associated with the area are transmitted in a raster order.
 15. The method of claim 10, further comprising updating a correction of the set of corrections, wherein the tag associated with the correction is modified when the correction is updated.
 16. The method of claim 10, wherein the area is an approximately five degree latitude by an approximately five degree longitude geographic region.
 17. The method of claim 10, wherein the set of corrections comprise a correction for at least one of: ionosphere delays, troposphere delays, satellite clock error states, satellite orbit error states, code biases, or phase biases.
 18. The method of claim 10, wherein transmitting stored corrections comprises transmitting visual odometry landmarks within the area to the GNSS receiver. 